home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-68k-src / machines / amiga68k / libsrc / stdio / fclose.c < prev    next >
C/C++ Source or Header  |  1999-01-01  |  634b  |  22 lines

  1. #include <stdio.h>
  2.  
  3. #include <proto/dos.h>
  4. extern char *_stdin,*_stdout,*_stderr;
  5. extern FILE *_firstfile,*_lastfile;
  6.  
  7. /*  schliesst Dateien   */
  8. /*  noch sehr einfach   */
  9. int fclose(FILE *f)
  10. {
  11.     if(!f) return(EOF);
  12.     if(!f->filehandle) return(EOF);
  13.     fflush(f);
  14.     if(f->filehandle!=_stdin&&f->filehandle!=_stdout&&f->filehandle!=_stderr)
  15.         Close((BPTR)f->filehandle);   /*  hier returncode auswerten   */
  16.     if(f->prev) f->prev->next=f->next; else _firstfile=f->next;
  17.     if(f->next) f->next->prev=f->prev; else _lastfile=f->prev;
  18.     if(f->base&&!(f->flags&_NOTMYBUF)) free(f->base-1);
  19.     free(f);
  20.     return(0);
  21. }
  22.